package OnlineShopping;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ShoppingCart{
    private List<Item> items;

    public List<Item> getItems() {
        return items;
    }

    public void setItems(List<Item> items) {
        this.items = items;
    }

    public ShoppingCart() {
        this.items = new ArrayList<>(); // 初始化 items
    }



    //添加商品
    public void addItem(String productId, int quantity) {
        Item item = loadProductInfo(productId); // 从 Excel 中加载商品信息
        if (item != null) {
            item.setQuantity(quantity); // 设置商品数量
            boolean itemExists = false; // 标记商品是否已在购物车中

            // 检查购物车中是否已存在该商品
            for (Item cartItem : items) {
                if (cartItem.getProductId().equals(item.getProductId())) {
                    // 如果购物车中已存在该商品，更新数量
                    cartItem.setQuantity(cartItem.getQuantity() + quantity);
                    System.out.println(item.getProductName() + " 的数量已更新到 " + cartItem.getQuantity() + "。");
                    itemExists = true;
                    break;
                }
            }

            // 如果商品不在购物车中，则添加
            if (!itemExists) {
                items.add(item);
                System.out.println(item.getProductName() + " 已添加到购物车。");
            }
        } else {
            System.out.println("商品ID为 " + productId + " 的商品未找到。");
        }
    }


    //移除商品
    public void removeItem(String productId) {
        items.removeIf(item -> item.getProductId().equals(productId));
        System.out.println("商品ID为 " + productId + " 的商品已从购物车中移除。");
    }
    //修改商品
    public void modifyItem(String productId, int newQuantity) {
        for (Item item : items) {
            if (item.getProductId().equals(productId)) {
                item.setQuantity(newQuantity);
                System.out.println("商品ID为 " + productId + " 的商品数量已修改为 " + newQuantity + "。");
                return;
            }
        }
        System.out.println("购物车中未找到商品ID为 " + productId + " 的商品。");
    }
    //查看购物车
    public void viewCart() {
        if (items.isEmpty()) {
            System.out.println("购物车为空。");
        } else {
            System.out.println("购物车内容：");
            for (Item item : items) {
                System.out.println("商品ID: " + item.getProductId() + ", 商品名: " + item.getProductName() +
                        ", 价格: " + item.getPrice() + ", 数量: " + item.getQuantity() +
                        ", 总价: " + item.getTotalPrice());
            }
        }
    }
    //清空购物车
    public void clearCart() {
        items.clear();
        System.out.println("购物车已清空。");
    }
    //从excel文件中读取商品信息
    private Item loadProductInfo(String productId) {
        try (FileInputStream fis = new FileInputStream("E:\\Desktop\\大二上\\实训\\网上购物系统\\Good.xlsx");
             Workbook workbook = new XSSFWorkbook(fis)) {
            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                Cell idCell = row.getCell(0); // 假设商品ID在第一列
                if (idCell != null) {
                    String idValue = "";
                    // 确定 idCell 的类型并获取字符串值
                    switch (idCell.getCellType()) {
                        case STRING:
                            idValue = idCell.getStringCellValue();
                            break;
                        case NUMERIC:
                            idValue = String.valueOf((int) idCell.getNumericCellValue()); // 转换数字为字符串
                            break;
                        default:
                            continue; // 如果不是字符串或数字，跳过
                    }

                    if (idValue.equals(productId)) { // 检查商品ID是否匹配
                        String productName = "";
                        Cell nameCell = row.getCell(1); // 商品名在第二列
                        if (nameCell != null) {
                            switch (nameCell.getCellType()) {
                                case STRING:
                                    productName = nameCell.getStringCellValue();
                                    break;
                                case NUMERIC:
                                    productName = String.valueOf(nameCell.getNumericCellValue());
                                    break;
                                default:
                                    continue; // 如果不是字符串或数字，跳过
                            }
                        }

                        double price = 0.0; // 初始化价格
                        Cell priceCell = row.getCell(5); // 价格在第六列
                        if (priceCell != null && priceCell.getCellType() == CellType.NUMERIC) {
                            price = priceCell.getNumericCellValue(); // 获取数值
                        }

                        return new Item(productId, productName, price, 0); // 默认数量为0
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null; // 未找到商品
    }
}
